package collection;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

/**
 * Collections类
 * 是操作 Set、List 和 Map 等集合的工具类，用来对集合进行操作
 * 提供了一系列静态的方法对集合元素进行排序、查询和修改等操作，还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
 *
 * 常用的静态方法
 * public static T max(Collection <? extends T> coll)    找出coll集合中最大的元素，
 *              集合中的对象必须是T或T的子类对象，而且支持自然排序
 * public static T max(Collection <? extends T> coll, Comparator <? super T> comp)
 *              找出coll集合中最大的元素，集合中的对象必须是T或T的子类对象，按照比较器comp找出最大者
 *
 * public static T min(Collection <? extends T> coll)    找出coll集合中最小的元素，
 *              集合中的对象必须是T或T的子类对象，而且支持自然排序
 * public static T min(Collection <? extends T> coll, Comparator <? super T> comp)
 *              找出coll集合中最小的元素，集合中的对象必须是T或T的子类对象，按照比较器comp找出最小者
 *
 * public static void reverse(List<?> list)         反转指定列表List中元素的顺序
 *
 * public static void sort(List<?> list)            对列表List中的元素进行自然排序（需要元素类实现Comparator接口）
 * public static void sort(List<?> list, Comparator <? super T> comp)       对列表List中的元素进行自然排序
 *
 * public static void shuffle(List<?> list)                 集合元素进行随机排序，类似洗牌
 * public static void shuffle(List<?> list, Random rnd)     集合元素进行随机排序，类似洗牌
 *
 * public static void copy(List<? super T> dest, List<? extends T> src)  将src中的内容复制到dest中
 *
 *
 * */
public class CollectionsDemo {

    public static void main(String[] args) {
        List<String> list = Get.getStringLinkedList();
        System.out.println(list);
        String max = Collections.max(list);
        System.out.println("max: " + max);
        String min = Collections.min(list);
        System.out.println("max: " + min);
        Collections.sort(list);
        System.out.println(list);
        Collections.shuffle(list);
        System.out.println(list);
        Collections.shuffle(list, new Random());
        System.out.println(list);
     /*   List<String> list1 = new LinkedList<>();
        Collections.copy(list1, list);
        System.out.println("list1: " + list1);*/
    }
}
